#!/usr/bin/env bash

. ./test.common

test_start "NTP peers"

# Allow and drop packets to the server in 1000 second intervals, so only one
# client has access to it and the other is forced to switch to the peer.
base_delay=$(cat <<-EOF | tr -d '\n'
  (+ 1e-4
     (* -1
        (equal 0.1 from 2)
        (equal 0.1 to 1)
        (equal 0.1 (min (% time 2000) 1000) 1000))
     (* -1
        (equal 0.1 from 3)
        (equal 0.1 to 1)
	(equal 0.1 (max (% time 2000) 1000) 1000)))
EOF
)

clients=2
peers=2
max_sync_time=1000
client_server_options="minpoll 6 maxpoll 6"
client_peer_options="minpoll 6 maxpoll 6"

run_test || test_fail
check_chronyd_exit || test_fail
check_source_selection || test_fail
check_sync || test_fail

base_delay="(+ 1e-4 (* -1 (equal 0.1 from 3) (equal 0.1 to 1)))"
client_peer_options=""

while read lminpoll lmaxpoll rminpoll rmaxpoll max_sync_time; do
	client_lpeer_options="minpoll $lminpoll maxpoll $lmaxpoll"
	client_rpeer_options="minpoll $rminpoll maxpoll $rmaxpoll"
	limit=$[$max_sync_time * 10]

	run_test || test_fail
	check_chronyd_exit || test_fail
	check_sync || test_fail
done <<-EOF
	3 6 3 6 400
	3 3 6 6 450
	6 6 3 3 450
	3 6 6 6 450
	6 6 3 6 450
	-2 -2 2 2 220
	2 2 -2 -2 220
EOF

test_pass
